<?php

declare(strict_types=1);

namespace App\CustHub\Model;

use Mine\MineModel;

/**
 * @property int $id 自增主键，唯一标识每条记录
 * @property int $uid 平台用户ID
 * @property int $robot_id 企微号ID
 * @property string $user_id 企微号微信ID
 * @property int $msg_id 消息的唯一ID，标识每一条消息
 * @property int $msgtype 消息类型编号，标识消息的种类
 * @property string $from_room_id 房间ID，如果消息来自房间则存储房间ID
 * @property int $as_id 未知字段，根据实际用途设置（暂定为整数）
 * @property string $receiver 接收者ID，通常为用户或群聊的ID
 * @property string $sender_name 发送者的名称，如果是空则为未定义
 * @property int $is_room 是否为群聊消息，0表示否，1表示是
 * @property int $json_type JSON类型（消息的JSON格式类型编号）
 * @property int $server_id 服务器ID，标识服务器的编号
 * @property array $content 消息的实际内容，可能是文本或其他类型
 * @property int $msg_flag 消息标志位，表示消息的状态或类型的标志
 * @property array $msg_data 消息的附加数据，允许为NULL
 * @property int $send_time 消息发送时间，UNIX时间戳格式
 * @property int $is_room_notice 是否为群通知消息，0表示否，1表示是
 * @property int $sender 发送者的ID，通常为用户或系统的标识
 * @property array $at_list 消息中@的用户列表，允许为NULL
 * @property string $appinfo 应用的附加信息，通常为加密或哈希值
 * @property string $room_conversation_id 房间对话ID
 * @property string $data_type_message 消息类型的描述文本
 * @property int $is_auto_at_cust 回复自动@客户：0=否 1=是 中控群用到
 */
class ChChatRecord extends MineModel
{
    public bool $timestamps = false;
    /**
     * The table associated with the model.
     */
    protected ?string $table = 'ch_chat_records';

    /**
     * The attributes that are mass assignable.
     */
    protected array $fillable = ['id', 'uid', 'robot_id', 'user_id', 'msg_id', 'msgtype', 'from_room_id', 'as_id', 'receiver', 'sender_name', 'is_room', 'json_type', 'server_id', 'content', 'msg_flag', 'msg_data', 'send_time', 'is_room_notice', 'sender', 'at_list', 'appinfo', 'room_conversation_id', 'data_type_message', 'is_auto_at_cust'];

    /**
     * The attributes that should be cast to native types.
     */
    protected array $casts = ['id' => 'integer', 'uid' => 'integer', 'robot_id' => 'integer', 'msg_id' => 'integer', 'msgtype' => 'integer', 'as_id' => 'integer', 'is_room' => 'integer', 'json_type' => 'integer', 'server_id' => 'integer', 'content' => 'array', 'msg_flag' => 'integer', 'msg_data' => 'array', 'send_time' => 'integer', 'is_room_notice' => 'integer', 'sender' => 'integer', 'at_list' => 'array', 'is_auto_at_cust' => 'integer'];

    public function robot()
    {
        return $this->hasOne(ChRobot::class, 'id', 'robot_id');
    }
}
